package com.tiptop;

import com.tiptop.server.LoginImpl;

import Ice.Communicator;
import Ice.ObjectAdapter;
import IceBox.Service;

/**
 * 实现启动ICE服务端代码
 * 使用IceBox 来加载启动 ice服务 
 * 服务要实现Service接口 并重新start 和 stop方法  
 */
public class LoginServer implements Service{
	
	//创建适配器实例  
    private ObjectAdapter adapter; 
	

	@Override
	public void start(String name, Communicator communicator, String[] args) {
        adapter = communicator.createObjectAdapter(name);  
        LoginImpl servant = new LoginImpl();  
        adapter.add(servant, communicator.stringToIdentity(name));  
        // 激活adapter  
        adapter.activate();  
        System.out.println("adapter has been activate");  
	}

	@Override
	public void stop() {
		adapter.destroy();  
        System.out.println("adapter has been destory");  
	}
	
	
	/*public static void main(String[] args) {
		int state = 0;
		Ice.Communicator communicator = null;
		try {
			// 初始化ice通信器communicator,可以使用args传入一下ice初始化的参数如超时时间，线程池大小等
			communicator = Ice.Util.initialize(args);
			// 创建一个名为queryEmployeeAdapter的适配器并且默认使用tcp协议 服务部署在10.4.30.81机器上
			// 服务开启10006监听端口
			Ice.ObjectAdapter adapter = communicator.createObjectAdapterWithEndpoints("loginAdapter",
					"default -p 10006");
			// 创建服务端代码实现servant
			LoginImpl servant = new LoginImpl();
			// 将servant与ice对象标识符建立映射关系，并添加到ice对象适配器中
			adapter.add(servant, Ice.Util.stringToIdentity("loginServer"));
			// 激活对象适配器
			adapter.activate();
			System.out.println("LoginServer adapter activate");
			// 服务在退出之前一直保持监听状态
			communicator.waitForShutdown();
		} catch (Exception e) {
			state = 1;
			System.out.println(e);
		} finally {
			if (communicator != null) {
				communicator.destroy();
			}
		}
		System.out.println("state: " + state);
	}*/
}
